Skip to content

ci: split coverage into parallel producers - #404

Merged
XuPeng-SH merged 15 commits into
mainfrom
xp/ci-two-bvt-coverage
Jul 27, 2026
Merged

ci: split coverage into parallel producers#404
XuPeng-SH merged 15 commits into
mainfrom
xp/ci-two-bvt-coverage

Conversation

@XuPeng-SH

@XuPeng-SH XuPeng-SH commented Jul 26, 2026

Copy link
Copy Markdown
Contributor

What this PR does

Replaces the serial UT + full-BVT coverage path with parallel producers while preserving coverage during rollout.

  • keeps Race UT unchanged and adds an independent non-race UT coverage producer
  • runs exactly two active BVT producers: Compose + Proxy and Launch + Pessimistic
  • assigns two complementary BVT groups by run_id + run_attempt; every run covers both groups and reruns swap deployments
  • uploads one compacted UT profile and two BVT profiles, then runs one merge job only after all producers succeed
  • gates Coverage UT before checkout/test execution: only organization members or PRs with safe-to-test may run untrusted PR code with coverage secrets
  • moves eligibility checking from the final merge to the producer, avoiding a redundant runner allocation after all producers finish
  • adds enable_legacy_coverage to utils.yaml, defaulting to true; existing callers retain legacy coverage until the MatrixOne entrypoint atomically disables it and enables the new producers
  • preserves the existing RUNNER_LABEL || ubuntu-22.04 BVT/merge runner policy

Rollout

Merge this PR before matrixorigin/matrixone#26179. Until #26179 merges, callers that do not pass enable_legacy_coverage: false continue to run the legacy Coverage job, so there is no coverage gap.

Validation

  • repository workflow schema validation: passed
  • actionlint on the changed coverage workflows (custom runner labels excluded): passed
  • paired MatrixOne integration workflow pins CI commit 6beb8d8bb8a93d62f6ff02591c3eafe287d536ce
  • real compacted ut-coverage artifact: 3,519,245 bytes (previously about 622 MB)

@XuPeng-SH
XuPeng-SH merged commit 7d7604e into main Jul 27, 2026
1 check passed
@XuPeng-SH
XuPeng-SH deleted the xp/ci-two-bvt-coverage branch July 27, 2026 00:09
XuPeng-SH added a commit to matrixorigin/matrixone that referenced this pull request Jul 27, 2026
## What this PR does / why we need it

Reworks PR coverage collection to remove the serial UT + full-BVT
critical path while retaining Race UT and coverage breadth.

- adds a separate non-race UT coverage producer; Race UT remains
unchanged and does not block coverage merge
- uses exactly two active BVT jobs: Compose + Proxy and Launch +
Pessimistic
- splits every non-optimistic BVT case into two complementary,
timing-balanced groups; each run executes both groups once and a rerun
swaps their deployment mapping
- collects profiles in the producer jobs and merges exactly one UT plus
two BVT profiles
- skips merge when any producer fails, coverage secrets are unavailable,
the PR is untrusted, or the PR is a draft
- routes Compose SQL through Proxy and gracefully stops
coverage-instrumented services
- compacts the all-package UT profile before upload, reducing the
observed artifact from about 622 MB to 3,519,245 bytes without changing
merged block/hit results
- fixes production object-storage retry cancellation and bounds QCloud
multipart abort cleanup to 30 seconds
- propagates test deadlines through object-storage constructors and
operations so a remote outage cannot consume the package-level 10-minute
timeout
- adds the production entrypoint calls for Coverage UT and Coverage
Merge; the same entrypoint disables legacy coverage atomically

## Rollout dependency

Depends on matrixorigin/CI#404. Merge CI#404 first. Its
`enable_legacy_coverage` input defaults to `true`, so the old entrypoint
retains legacy coverage until this PR merges; this PR passes `false` in
the same commit that enables the new producers.

`.github/workflows/coverage-integration.yaml` is validation-only and
pins reviewed CI commit `6beb8d8bb8a93d62f6ff02591c3eafe287d536ce`.
Remove it after the final integration run passes and before merging this
PR.

## Which issue(s) this PR fixes:

Related performance issue:
#25116

## Validation

- `pkg/fileservice`: full short package test passed
- `pkg/fileservice`: full short `-race` test passed; final
changed-helper race selection passed
- `go vet ./pkg/fileservice`: passed
- `make err-check`: passed
- actionlint on MatrixOne entrypoint/integration workflows: passed
- actionlint on changed CI coverage workflows: passed (known custom
runner labels excluded)
- BVT grouping: 1,113 non-optimistic scripts; group union/disjoint
validation passed
- Docker Compose `launch-multi-cn` config validation: passed
- CI workflow schema validation in matrixorigin/CI#404: passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant